Linear filters are much used in image processing, in signal processing and in telecommunications.
In image processing they make it possible to reduce noise, to increase contrast, to smooth, to extract coarse characteristics or else to extract the contours of an image. By way of example, the Sobel and Prewitt operators make it possible to detect the contours of an image. A matrix convolution of the image is performed using a two-dimensional convolution mask, the mask being of size 3×3. This convolution is conducted in the discrete spatial domain and is implemented in practice by virtue of a FIR finite impulse response filter of order 3.
Other more accurate contour detection procedures use IIR infinite impulse response filters. IIR filters are more complex to implement than FIR filters because of their recursive characteristic. Indeed, the output of the filter depends on the input samples but also on the previous results resulting from the filtering. Moreover, the type of data feed must be different so as to present an anti-causal stream as input to the filter. By way of example, the Deriche and Shen filters, much used in image processing, are IIR filters of order 2 and of order 1 respectively. The Deriche filter makes it possible to perform contour detection on a processed image, based on the computation of gradients. The gradient along the abscissa axis is computed using a smoothing filter in the ordinate direction, and then a differentiator filter in the abscissa direction. Each of the two filters decomposes into a causal part and an anti-causal part. Another smoothing filter and another differentiator filter are moreover necessary for computing the gradient along the ordinate axis. Four recursive filters are therefore necessary for carrying out contour detection with this procedure.
It is increasingly common for a signal processing system to have the capacity to carry out several concurrent applications. In the case of an image processing system, the algorithms typically call upon several types of operations to be carried out on the images, notably linear filtering operations. Several types of filters may be computed and combined so as to extract the useful information from the image. A hardware module having a high computational power while allowing a certain flexibility for executing different functions is today particularly useful in an embedded system.
The existing solutions making it possible to carry out linear filtering operations are typically carried out with the aid of processors or dedicated architectures.
In the case of solutions based on embedded processors, it is possible to carry out linear filtering operations with general-purpose processors, with digital signal processors termed DSPs, or else with specific processors of the SIMD type. On account of their programmability, the use of processors allows flexible implementation, but the available computational power remains limited. Indeed, to carry out a filtering of length N, a conventional general-purpose processor typically requires 4×N clock cycles per image pixel to perform a convolution.
A DSP processor is more suited to this kind of operation but requires N/2 cycles per image pixel.
On account of its highly parallel structure, an SIMD processor is particularly suited to the linear convolution but is less so for the production of recursive filters. This is due to the handling of various types of data access (causal and anti-causal) as well as to the dependency, specific to recursive filters, on the previous results. Moreover, this type of computation demands significant precision and a wide computational dynamic range. Embedded SIMD processors are limited as regards these two aspects.
An implementation based on a dedicated architecture makes it possible to optimize the processing times but is not sufficiently flexible. It is difficult in this case to implement both FIR filters and IIR filters on one and the same architecture while optimizing the cost in terms of silicon.
It is apparent that the existing solutions allow either high flexibility of implementation in exchange for low computational performance, or conversely good computational performance in exchange for limited flexibility of use.